require 'rubygems'
require 'json'

require 'servlet.rb'
require 'shard.rb'


# === shard 処理を定義したサーブレット
#
# Author:: krdlab
#
class ShardServlet < NightSkyServlet

  def connect_first(req, res)
    index_path = File.join(ShardServlet.get_docroot, 'index.html')
    res.content_type = 'text/html; charset=UTF-8';
    res.body = open(index_path).read
  end

  def response_to_waiters(req, res)
    # XXX 差分送信の管理も厳密にする
    last = Shard.last
    res.content_type = 'text/xml;charset=UTF-8'
    res.body = JSON.generate(:version => last.version,
                             :svg     => last.svg)
  end

  def response_to_posted_client(req, res)
    posted_data = JSON.parse(req.query['json'])
    if 0 < posted_data['version'] then
      Shard.create(:version => posted_data['version'],
                   :svg     => posted_data['svg'])
    end
    res.content_type = 'text/plain;charset=UTF-8';
    res.body = '' # 捨てデータ

    # logger: @logger.warn()
  end


  # ドキュメントルートは設定してくれ

  @@doc_root = '/tmp'

  def self.set_docroot(root)
    @@doc_root = root
  end

  def self.get_docroot
    @@doc_root
  end
end

